package com.cms.cmsbackend.config;

import com.cms.cmsbackend.util.JwtTokenUtils;
import org.springframework.web.servlet.HandlerInterceptor;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;


/*拦截器
让一个类去实现一个HanderInterceptor接口
 */

public class CmsInterceptor implements HandlerInterceptor {

    /*
    request代表将请求所有的数据封装成一个request对象
    response代表将所有的相应封装成一个response对象
     */
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {

        //告诉客户端服务器要返回的数据类型和编码
        //response.setContentType("text/html;charset=utf-8");
        //response.getWriter().println("token失效，请重新登录");
        //返回true让行
        //返回false不让行
        //System.out.println("我就是不让你走，你能咋地");


        //拿到token，从请求头里面获取key值为TOKEN的数据
        String token = request.getHeader("TOKEN");

        try {
            //校验token，如果返回true，token有效，否则无效
            boolean result = JwtTokenUtils.validateToken(token);
            //如果token校验正确，意味着token有效
            if (result) {
                return true;
            }else {
                response.setContentType("text/html;charset=utf-8");
                response.getWriter().println("token已失效");
                return false;
            }
        } catch (Exception e) {

            //校验失败就给客户端反应结果，请求不放行
            response.setContentType("text/html;charset=utf-8");
            response.getWriter().println("token已失效");
            return false;
        }
    }
}


